package main

import "fmt"

//函数参数,返回值
func add(a, b int) int {
	return a + b
}

//变长参数
func sumList(nums ...int) int {
	var sum = 0
	for _, n := range nums {
		sum += n
	}
	return sum
}

//多返回值
func r1(age int) (string, bool) {
	if age >= 18 {
		return "成年", true
	} else {
		return "未成年", false
	}
}

//命名式多返回值
func r2(age int) (msg string, ok bool) {
	if age >= 18 {
		msg = "成年"
		ok = true
	} else {
		msg = "未成年"
		ok = false
	}
	return //一定有return
}

func userLogin() {
	fmt.Println("登录...")
}
func profile() {
	fmt.Println("个人中心...")
}
func logout() {
	fmt.Println("注销...")
}
func main() {
	fmt.Println(add(1, 2))
	fmt.Println(sumList(1, 2, 3, 4, 5))
	fmt.Println(r1(15))
	fmt.Println(r2(15))

	//匿名函数
	var f1 = func(a int, b int) int {
		return a + b
	}
	fmt.Printf("%T,(1+2)=%d\n", f1, f1(1, 2))

	//映射函数，避免使用switch
	var mapf = map[int]func(){
		1: userLogin,
		2: profile,
		3: logout,
	}
	var choice int
	fmt.Print("输入（1登录，2个人中心，3注销）：")
	fmt.Scan(&choice)
	mapf[choice]()

}
